iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 25
0
自我挑戰組

從0開始,一起學C語言吧!系列 第 25

從0開始,一起學C語言吧!(Day25)

  • 分享至 

  • xImage
  •  

Day25-綜合練習

那我們教完了陣列的用法,那今天就來做個綜合練習吧
範例1:搜尋陣列內容

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define SIZE 20
int search(int [],int ,int ,int);
int main(void){
	int i,a[SIZE],from=0,key;
	srand(time(NULL));
	for(i=0;i<SIZE;i++)
	   a[i]=rand()%10*1;
	printf("請輸入欲搜尋的值(1~10)");
	scanf("%d",&key);
	while(from<SIZE){
		int ans;
		ans=search(a,from,SIZE,key);
		if(ans==-1){
			if(!from)
			   printf("%d not found\n",key);
			break;
		}
	    else{
	    	printf("%d found at a[%d]=%d\n",key,ans,a[ans]);
	    	from=ans+1;
		}
	}
	system("pause");
}
int search(int a[],int from ,int size,int key){
	int i;
	for(i=from;i<size;i++)
	    if(a[i]==key)
	        return i;
	    return -1;
}

印出:
https://ithelp.ithome.com.tw/upload/images/20190926/201199584dRAhm0O85.png
解釋:
SIZE是一個變數,自動替換成整數20
程式的while()迴圈,呼叫search()函式搜尋陣列,並控制from變數,找出所有出現在陣列中的關鍵值
搜尋出關鍵值(key)的所有索引值(index),search()函式接受四個引數,第一個引數a[]是欲搜尋的陣列,第二個引數from是選擇要從陣列哪一個index開始搜尋(若找到key,函式就會結束,並return index),第三個引數size是陣列的大小,第四個引數key則是欲搜尋的關鍵值
範例2:

#include<stdio.h>
#include<stdlib.h>
int main(void){
	short a[200];
	int m=0,k,i,carry=0;
	for(i=0;i<200;i++)
	    a[i]=0;
	a[m]=1;
	for(k=2;k<=50;k++){
		for(i=0;i<=m;i++){
			a[i]=a[i]*k;
			a[i]=a[i]+carry;
			if((carry=a[i]/10) !=0&&i==m)
			   m++;
			a[i]=a[i]%10;
		}
	}
	printf("50!=");
	for(i=m;i>=0;i--)
	    printf("%d",a[i]);
	printf("\n");
	system("pause");
}

印出:
https://ithelp.ithome.com.tw/upload/images/20190926/20119958LEyyZVydpt.png
解釋:陣列a用來記錄欲計算數字,變數m紀錄了目前所在位數,陣列第0個元素紀錄數字個位數,第1個元素紀錄數字第十位數,以此類推

那今天就先到這拉
謝謝大家今天的閱讀


上一篇
從0開始,一起學C語言吧!(Day24)
下一篇
從0開始,一起學C語言吧!(Day26)
系列文
從0開始,一起學C語言吧!30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言